package EcoSpeed;

import java.util.Observable;


/**
 * Interface DriverLift
 * Interface pour un driver d'ascenseur. Cette interface utilise l'interface
 * runnable car un ascenseur est un système autonomme donc possède un thread a
 * lui.
 */
public abstract class DriverLift extends Observable {

	/**
	 * Ascesseur de l'identifiant
	 * @return l'identifiant
	 */
    public abstract int getId();

    /**
    * Retourne l'étage ou est actuellement l'ascenseur.
    * @return       int
    */
    public abstract int getFloor();


    /**
    * Retourne la charge actuelle de l'ascenseur.
    * @return       int
    */
    public abstract int getWeight(  );

    /**
    * Retourne la charge maximum de l'ascenseur.
    * @return       int
    */
    public abstract int getMaxWeight(  );


    /**
    * Deplace un ascenseur a l'étage @floor
    * @param        floor Etage de destination
    */
    public abstract void moveTo( int floor );

    /**
     * Open The door
     */
    public abstract void openDoor();

    /**
     * Close the door
     */
    public abstract void closeDoor();

    /**
     * Statut of the door
     * @return L'etat de la porte
     */
    public abstract boolean doorOpened();

    /**
     * Set l'étage actuel
     * @param val
     */
    public abstract void setFloor(int val);

    /**
     * Réinitialise l'ascenseur
     */
    public abstract void reset();

}
